/* -*-jde-*- */
/* <BinomialQueue.java> */
package Practica7.structures;

/**
 * Clase para la construcción de una BinomialQueue
 *
 * @author	Peralta Santa Anna Victor Miguel
 * @since	Julio 2011
 */
public abstract class BinomialQueue<Type> {

    /**
     * Mantiene el tamaño de la cola binomial
     */
    protected int size;

    /**
     * Encuentra el mínimo elemento en la BinomialQueue
     * @return el Minimo elemento del tipo generico
     */
    public abstract Type findMin();

    /**
     * Borra el mínimo elemento en la BinomialQueue
     * @return el Minimo elemento que se acaba de borrar
     */
    public abstract Type deleteMin();

    /**
     * Inserta un elemento en la cola binomial
     */
    public abstract void insert(Type object);

    /**
     * Funde dos colas binomiales del mismo tipo.
     *
     * @param bq SLa cola binomial con la que se va a fundir.
     * @return	La cola binomial fundida
     */
    public abstract BinomialQueue<Type> meld(BinomialQueue<Type> bq);

    /**
     * Nos dice si la cola binomial está vacía
     * @return el Minimo elemento del tipo generico
     */
    public boolean isEmpty() {
        return size == 0;
    }

    /**
     * Regresa el tamaño de la estructura
     * @return regresa el tamaño de la estructura
     */
    public int size() {
        return size;
    }// size()

    /**
     * La representación en cadena de cómo se esta visualizanda la cola binomial
     * @return La representación en cadena de la cola binomial
     */
    @Override
    public abstract String toString();
}// BinomialQueue

